﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;

namespace Sociedad.DAL
{
    public class SolicitudInscripcionDAL
    {
        EntityConnectionSOA context = new EntityConnectionSOA();

        public soa_SolicitudInscripcion Obtener_SolicitudInscripcion(String pRUC)
        {
            var beSoli = from soli in context.soa_SolicitudInscripcion
                        where soli.csin_RUC == pRUC
                        select soli;
            return (soa_SolicitudInscripcion)beSoli.First();
        }

        public soa_SolicitudInscripcion Obtener_SolicitudInscripcionxCod(String pCod)
        {
            var beSoli = from soli in context.soa_SolicitudInscripcion
                         where soli.csin_Codigo == pCod
                         select soli;
            return (soa_SolicitudInscripcion)beSoli.First();
        }

        public List<vw_Listar_SolicitudInscripcion> Listar_SolicitudInscripcion(int pAnio)
        {
            List<vw_Listar_SolicitudInscripcion> lstSol = new List<vw_Listar_SolicitudInscripcion>();
            try
            {
                var lst = from listar in context.vw_Listar_SolicitudInscripcion
                          where listar.dsin_FecRegistro.Year == pAnio
                          select listar;

                if (lst != null)
                {
                    lstSol = lst.ToList();
                }
                else
                {
                    vw_Listar_SolicitudInscripcion beSoli = new vw_Listar_SolicitudInscripcion();
                    for (int i = 1; i <= 6; i++)
                    {
                        lstSol.Add(beSoli);
                    }
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return lstSol;
        }

        public String Insertar_SolicitudInscripcion(soa_SolicitudInscripcion oSolic)
        {
            String cRpta = "0@";
            try
            {
                var parameters = new[] { 
                    new SqlParameter("@0", oSolic.csin_RUC),
                    new SqlParameter("@1", oSolic.csin_RazonSocial ),
                    new SqlParameter("@2", oSolic.csin_Telefonos ),
                    new SqlParameter("@3", oSolic.csin_Email ),
                    new SqlParameter("@4", oSolic.nsin_AudFin ),
                    new SqlParameter("@5", oSolic.nsin_AudGes ),
                    new SqlParameter("@6", oSolic.csin_ColProfesional ),
                    new SqlParameter("@7", oSolic.csin_NroMatricula ),
                    new SqlParameter("@8", oSolic.dsin_FecColegiatura ),
                    new SqlParameter("@9", oSolic.csin_LugarPago ),
                    new SqlParameter("@10", oSolic.dsin_FecPago ),
                    new SqlParameter("@11", oSolic.csin_NroOperacion ),
                    new SqlParameter("@12", oSolic.cprm_TipDocAcceso ),
                    new SqlParameter("@13", oSolic.csin_NroDocAcceso ),
                    new SqlParameter("@14", oSolic.csin_NombresAcceso ),
                    new SqlParameter("@15", oSolic.csin_ApellidosAcceso ),
                    new SqlParameter("@16", oSolic.csin_EmailAcceso ),
                    new SqlParameter("@17", oSolic.cprm_Estado ),
                    new SqlParameter("@18", oSolic.csin_UsuCre ),
                    new SqlParameter("@19", SqlDbType.VarChar, 100) { Direction = ParameterDirection.Output }        
                };

                context.ExecuteStoreCommand("exec pa_Ins_SolicitudInscripcion @_csin_RUC=@0, @_csin_RazonSocial =@1, @_csin_Telefonos =@2, @_csin_Email =@3, @_nsin_AudFin =@4, @_nsin_AudGes =@5, @_csin_ColProfesional =@6, @_csin_NroMatricula =@7, @_dsin_FecColegiatura =@8, @_csin_LugarPago =@9, @_dsin_FecPago =@10, @_csin_NroOperacion =@11, @_cprm_TipDocAcceso =@12, @_csin_NroDocAcceso =@13, @_csin_NombresAcceso =@14, @_csin_ApellidosAcceso =@15, @_csin_EmailAcceso =@16, @_cprm_Estado =@17, @_csin_UsuCre =@18, @_ResultMsj=@19 output", parameters);

                cRpta = (String)parameters[19].Value;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return cRpta;
        }
    }
}
